#ifndef __ITEMSOCKETOPTIONDEFINE_H__
#define __ITEMSOCKETOPTIONDEFINE_H__

#pragma once

enum
{
	SOCKET_OPTION_TYPE_NONE = 0x0,
	SOCKET_OPTION_TYPE_SEED = 0x1,
	SOCKET_OPTION_TYPE_BONUS = 0x2,
	SOCKET_OPTION_TYPE_SET = 0x3,
};

enum
{
	SEED_OPTION_TYPE_NONE = 0x0,
	SEED_OPTION_TYPE_VALUE = 0x1,
	SEED_OPTION_TYPE_RATE = 0x2,
	SEED_OPTION_TYPE_PER_LEVEL = 0x3,
	SEED_OPTION_TYPE_PER_HP = 0x4,
	SEED_OPTION_TYPE_PER_MP = 0x5,
};

enum
{
	BONUS_OPTION_WEAPON_ATTACK_POWER = 0x0,
	BONUS_OPTION_WEAPON_ATTACK_SKILL_POWER = 0x1,
	BONUS_OPTION_STAFF_ATTACK_POWER = 0x2,
	BONUS_OPTION_STAFF_ATTACK_SKILL_POWER = 0x3,
	BONUS_OPTION_PROTECT_BLOCK_POWER = 0x4,
	BONUS_OPTION_PROTECT_MAX_HP_INC = 0x5,
	BONUS_OPTION_WEAPON_ATTACK_POWER_4TH = 0x06,
	BONUS_OPTION_WEAPON_ATTACK_SKILL_POWER_4TH = 0x07,
	BONUS_OPTION_STAFF_ATTACK_POWER_4TH = 0x08,
	BONUS_OPTION_STAFF_ATTACK_SKILL_POWER_4TH = 0x9,
	BONUS_OPTION_PROTECT_BLOCK_POWER_4TH = 0xA,
	BONUS_OPTION_PROTECT_MAX_HP_INC_4TH = 0xB,
};

enum
{
	SET_OPTION_DOUBLE_DAMAGE_RATE_INC = 0x0,
	SET_OPTION_IGNORE_ENEMY_DEFENSE = 0x1,
};

enum
{
	SEED_EFFECT_TYPE_FIRE_BEGIN = 0x0,
	SEED_EFFECT_TYPE_ATTACK_POWER = 0x0,
	SEED_EFFECT_TYPE_ATTACK_SPEED = 0x1,
	SEED_EFFECT_TYPE_MAX_ATTACK_POWER = 0x2,
	SEED_EFFECT_TYPE_MIN_ATTACK_POWER = 0x3,
	SEED_EFFECT_TYPE_MIN_MAX_ATTACK_POWER = 0x4,
	SEED_EFFECT_TYPE_REDUCE_AG_RATE = 0x5,
	SEED_EFFECT_TYPE_FIRE_END = 0x9,

	SEED_EFFECT_TYPE_WATER_BEGIN = 0xa,
	SEED_EFFECT_TYPE_SUCCESS_BLOCK = 0xa,
	SEED_EFFECT_TYPE_BLOCK_POWER = 0xb,
	SEED_EFFECT_TYPE_SHIELD_BLOCK_POWER = 0xc,
	SEED_EFFECT_TYPE_REDUCE_DAMAGE = 0xd,
	SEED_EFFECT_TYPE_REFLECT_DAMAGE = 0xe,
	SEED_EFFECT_TYPE_WATER_END = 0xf,

	SEED_EFFECT_TYPE_ICE_BEGIN = 0x10,
	SEED_EFFECT_TYPE_MONSTER_KILL_REFILL_HP = 0x10,
	SEED_EFFECT_TYPE_MONSTER_KILL_REFILL_MP = 0x11,
	SEED_EFFECT_TYPE_ATTACK_SKILL_POWER = 0x12,
	SEED_EFFECT_TYPE_ATTACK_ACCURACY = 0x13,
	SEED_EFFECT_TYPE_ITEM_DURABILITY_IMPROVE = 0x14,
	SEED_EFFECT_TYPE_ICE_END = 0x14,

	SEED_EFFECT_TYPE_WIND_BEGIN = 0x15,
	SEED_EFFECT_TYPE_REFILL_HP_INC = 0x15,
	SEED_EFFECT_TYPE_MAX_HP_INC = 0x16,
	SEED_EFFECT_TYPE_MAX_MP_INC = 0x17,
	SEED_EFFECT_TYPE_REFILL_MP_INC = 0x18,
	SEED_EFFECT_TYPE_MAX_AG_INC = 0x19,
	SEED_EFFECT_TYPE_REFILL_AG_INC = 0x1a,
	SEED_EFFECT_TYPE_MONSTER_KILL_ZEN_INC = 0x1b,
	SEED_EFFECT_TYPE_WIND_END = 0x1c,

	SEED_EFFECT_TYPE_THUNDER_BEGIN = 0x1d,
	SEED_EFFECT_TYPE_EXCELLENT_DAMAGE_INC = 0x1d,
	SEED_EFFECT_TYPE_EXCELLENT_DAMAGE_RATE_INC = 0x1e,
	SEED_EFFECT_TYPE_CRITICAL_DAMAGE_INC = 0x1f,
	SEED_EFFECT_TYPE_CRITICAL_DAMAGE_RATE_INC = 0x20,
	SEED_EFFECT_TYPE_THUNDER_END = 0x21,

	SEED_EFFECT_TYPE_EARTH_BEGIN = 0x22,
	SEED_EFFECT_TYPE_STRENGTH_INC = 0x22,
	SEED_EFFECT_TYPE_DEXTERITY_INC = 0x23,
	SEED_EFFECT_TYPE_VITALITY_INC = 0x24,
	SEED_EFFECT_TYPE_ENERGY_INC = 0x25,
	SEED_EFFECT_TYPE_REQUIRE_STRENGTH_DEC = 0x26,
	SEED_EFFECT_TYPE_REQUIRE_DEXTERITY_DEC = 0x27,
	SEED_EFFECT_TYPE_EARTH_END = 0x28,

	SEED_EFFECT_TYPE_UNIQUE_BEGIN = 0x29,
	SEED_EFFECT_TYPE_UNIQUE_1 = 0x29,
	SEED_EFFECT_TYPE_UNIQUE_2 = 0x2a,
	SEED_EFFECT_TYPE_UNIQUE_END = 0x2b,

	SEED_EFFECT_TYPE_SET_BEGIN = 0x2c,
	SEED_EFFECT_TYPE_SET_DOUBLE_DAMAGE_RATE_INC = 0x2c,
	SEED_EFFECT_TYPE_SET_IGNORE_ENERMY_DEFENSE = 0x2d,
	SEED_EFFECT_TYPE_SET_END = 0x2d,
};

typedef struct
{
	BYTE m_SocketOptionIndex;
	BYTE m_SocketOptionValueType;
	WORD m_SocketOptionValue;
	BYTE m_SocketOptionCount;
	
	void Clear()
	{
		this->m_SocketOptionIndex = 0xFF;
		this->m_SocketOptionValue = 0;
		this->m_SocketOptionValueType = 0;
		this->m_SocketOptionCount = 0;
	}
} SOCKET_OPTION_LIST, *LPSOCKET_OPTION_LIST;

#endif